
package hmm;

/**
 * Markovian probability tables interface.
 */
public interface MarkovianProbabilities {
	/**
	 * State transition probability.
	 * Calculates the probability to be at state k in time i+1,
	 * given being at state l in time i
	 * NOTE: The returned value is the LOG (in base 10) of
	 * the probability.
	 * @param k The new state 
	 * @param l The old state
	 * @param i The time that the model is on state l
	 * @return the LOG of the probability to be at state k in time i+1,
	 * given being at state l in time i.
	 */
	public double transitionProb(int k, int l, int i);
	
	/**
	 * Observation probabilities
	 * Calculates the probability of having observation o in state s. 
	 * @param state the assumed state
	 * @param observationIndex the index of the current observation
	 * @return the probability (0 <= p <= 1).
	 */
	public double observationProb(int state, int observationIndex);
}
